using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._IndoorsTools._IndoorsNetwork
{
    /// <summary>
    /// <para>Create Indoor Network Dataset</para>
    /// <para>Creates an indoor network dataset containing the necessary feature classes to maintain indoor network data using a streamlined schema that conforms to the ArcGIS Indoors Information Model. The indoor network dataset can be used to support indoor routable networks.</para>
    /// <para>创建包含必要要素类的室内网络数据集，以使用符合 ArcGIS Indoors 信息模型的简化方案来维护室内网络数据。室内网络数据集可用于支持室内可路由网络。</para>
    /// </summary>    
    [DisplayName("Create Indoor Network Dataset")]
    public class CreateIndoorNetworkDataset : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public CreateIndoorNetworkDataset()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_target_gdb">
        /// <para>Target Geodatabase</para>
        /// <para>The target file or enterprise geodatabase that will contain the output indoor network dataset.</para>
        /// <para>将包含输出室内网络数据集的目标文件或企业级地理数据库。</para>
        /// </param>
        /// <param name="_indoor_network_dataset_name">
        /// <para>Indoor Network Dataset Name</para>
        /// <para>The unique name of the output indoor network dataset. This name is also used for the preliminary indoor network dataset. The default name for the indoor network dataset is IndoorNetwork. The default name for the preliminary indoor network dataset is PrelimIndoorNetwork.</para>
        /// <para>输出室内网络数据集的唯一名称。此名称也用于初步的室内网络数据集。室内网络数据集的默认名称为 IndoorNetwork。初步室内网络数据集的默认名称为 PrelimIndoorNetwork。</para>
        /// </param>
        /// <param name="_spatial_reference">
        /// <para>Coordinate System</para>
        /// <para>The spatial reference of the output indoor network dataset.</para>
        /// <para>输出室内网络数据集的空间参考。</para>
        /// </param>
        public CreateIndoorNetworkDataset(object _target_gdb, object _indoor_network_dataset_name, object _spatial_reference)
        {
            this._target_gdb = _target_gdb;
            this._indoor_network_dataset_name = _indoor_network_dataset_name;
            this._spatial_reference = _spatial_reference;
        }
        public override string ToolboxName => "Indoors Tools";

        public override string ToolName => "Create Indoor Network Dataset";

        public override string CallName => "indoors.CreateIndoorNetworkDataset";

        public override List<string> AcceptEnvironments => ["configKeyword", "workspace"];

        public override object[] ParameterInfo => [_target_gdb, _indoor_network_dataset_name, _spatial_reference, _output_dataset];

        /// <summary>
        /// <para>Target Geodatabase</para>
        /// <para>The target file or enterprise geodatabase that will contain the output indoor network dataset.</para>
        /// <para>将包含输出室内网络数据集的目标文件或企业级地理数据库。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Target Geodatabase")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _target_gdb { get; set; }


        /// <summary>
        /// <para>Indoor Network Dataset Name</para>
        /// <para>The unique name of the output indoor network dataset. This name is also used for the preliminary indoor network dataset. The default name for the indoor network dataset is IndoorNetwork. The default name for the preliminary indoor network dataset is PrelimIndoorNetwork.</para>
        /// <para>输出室内网络数据集的唯一名称。此名称也用于初步的室内网络数据集。室内网络数据集的默认名称为 IndoorNetwork。初步室内网络数据集的默认名称为 PrelimIndoorNetwork。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Indoor Network Dataset Name")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _indoor_network_dataset_name { get; set; }


        /// <summary>
        /// <para>Coordinate System</para>
        /// <para>The spatial reference of the output indoor network dataset.</para>
        /// <para>输出室内网络数据集的空间参考。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Coordinate System")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _spatial_reference { get; set; }


        /// <summary>
        /// <para>Output Dataset</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Dataset")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _output_dataset { get; set; }


        public CreateIndoorNetworkDataset SetEnv(object configKeyword = null, object workspace = null)
        {
            base.SetEnv(configKeyword: configKeyword, workspace: workspace);
            return this;
        }

    }

}